package store

import (
	"git.cloud.inspur.com/ichain/ichain-sdk-go/pkg/providers/iam"
)

type MemoryUserStore struct {
	store map[string][]byte
}

func NewMemoryUserStore() *MemoryUserStore {
	store := make(map[string][]byte)
	return &MemoryUserStore{store: store}
}

func (s *MemoryUserStore) Store(user *iam.UserData) error {
	s.store[user.ID+"@"+user.IAMID] = user.EnrollmentCertificate
	return nil
}

func (s *MemoryUserStore) Load(id iam.IdentityIdentifier) (*iam.UserData, error) {
	cert, ok := s.store[id.ID+"@"+id.IAMID]
	if !ok {
		return nil, iam.ErrUserNotFound
	}
	userData := iam.UserData{
		ID:                    id.ID,
		IAMID:                 id.IAMID,
		EnrollmentCertificate: cert,
	}
	return &userData, nil
}
